home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / lamstex / inputs / amstexl.tex < prev    next >
Text File  |  1991-09-06  |  54KB  |  1,388 lines

  1. % AMSTEXL.TEX   VERSION 2.0
  2. % Copyright (C) 1990, 1991 American Mathematical Society
  3. % All rights reserved.
  4. \catcode`\@=11
  5. \ifx\amstexloaded@\relax\catcode`\@=\active
  6.  \endinput\else\let\amstexloaded@\relax\fi
  7. \def\W@{\immediate\write\sixt@@n}
  8. \def\CR@{\W@{}\W@{AmS-TeX - Version 2.0L\space\space[LamS-TeX subset]}\W@{}
  9. \W@{COPYRIGHT 1985, 1990 - AMERICAN MATHEMATICAL SOCIETY}
  10. \W@{Use of this macro package is not restricted provided}
  11. \W@{each use is acknowledged upon publication.}\W@{}}
  12. \CR@
  13. \everyjob{\CR@}
  14. \toksdef\toks@@=2
  15. \long\def\rightappend@#1\to#2{\toks@{\\{#1}}\toks@@\expandafter{#2}%
  16.  \xdef#2{\the\toks@@\the\toks@}\toks@{}\toks@@{}}
  17. \def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
  18.  \ch@ck#1#4#2\allocationnumber=\count1#1
  19.  \global#3#5=\allocationnumber}
  20. \newcount\count@@
  21. \newcount\count@@@
  22. \def\FN@{\futurelet\next}
  23. \def\DN@{\def\next@}
  24. \def\DNii@{\def\nextii@}
  25. \def\RIfM@{\relax\ifmmode}
  26. \def\RIfMIfI@{\relax\ifmmode\ifinner}
  27. \def\setboxz@h{\setbox\z@\hbox}
  28. \def\wdz@{\wd\z@}
  29. \def\boxz@{\box\z@}
  30. \def\height{height}
  31. \def\width{width}
  32. \def\depth{depth}
  33. \def\iterate{\body\expandafter\iterate\else\fi}
  34. \newlinechar=`\^^J
  35. \newhelp\defaulthelp@{Sorry, I already gave what help I could...^^J
  36. Maybe you should try asking a human?^^J
  37. An error might have occurred before I noticed any problems.^^J
  38. ``If all else fails, read the instructions.''}
  39. \def\eat@#1{}
  40. \def\space@.{\futurelet\space@\relax}
  41. \space@. %
  42. \newhelp\athelp@
  43. {Only certain combinations beginning with @ make sense to me.^^J
  44. Perhaps you wanted \string\@ for a printed @?^^J
  45. I've ignored the character or group after @.}
  46. \def\atdef@#1{\expandafter\def\csname #1@at\endcsname}
  47. \newhelp\defahelp@{If you typed \string\define\space cs instead of
  48. \string\define\string\cs\space^^J
  49. I've substituted an inaccessible control sequence so that your^^J
  50. definition will be completed without mixing me up too badly.^^J
  51. If you typed \string\define{\string\cs} the inaccessible control sequence^^J
  52. was defined to be \string\cs, and the rest of your^^J
  53. definition appears as input.}
  54. \newhelp\defbhelp@{I've ignored your definition, because it might^^J
  55. conflict with other uses that are important to me.}
  56. \def\define{\FN@\define@}
  57. \def\define@{\ifcat\noexpand\next\relax
  58.  \expandafter\define@@\else\errhelp\defahelp@
  59.  \err@{\noexpand\define must be followed by a control
  60.  sequence}\expandafter\def\expandafter\nextii@\fi}
  61. \def\undefined@@@@@@@@@@{}
  62. \def\preloaded@@@@@@@@@@{}
  63. \def\next@@@@@@@@@@{}
  64. \def\define@@#1{\ifx#1\relax\errhelp\defbhelp@
  65.  \err@{\noexpand#1is already defined}\DN@{\DNii@}\else
  66.  \expandafter\ifx\csname\expandafter\eat@\string
  67.  #1@@@@@@@@@@\endcsname\undefined@@@@@@@@@@\errhelp\defbhelp@
  68.  \err@{\noexpand#1can't be defined}\DN@{\DNii@}\else
  69.  \expandafter\ifx\csname\expandafter\eat@\string#1\endcsname\relax
  70.  \global\let#1\undefined\DN@{\def#1}\else\errhelp\defbhelp@
  71.  \err@{\noexpand#1is already defined}\DN@{\DNii@}\fi
  72.  \fi\fi\next@}
  73. \let\redefine\def
  74. \def\predefine#1#2{\let#1#2}
  75. \def\undefine#1{\let#1\undefined}
  76. \def\tie{\unskip\nobreak\ }
  77. \let\graveaccent\`
  78. \let\acuteaccent\'
  79. \let\tildeaccent\~
  80. \let\hataccent\^
  81. \let\underscore\_
  82. \let\B\=
  83. \let\D\.
  84. \let\ic@\/
  85. \def\/{\unskip\ic@}
  86. \def\textfonti{\the\textfont\@ne}
  87. \def\t#1#2{{\edef\next@{\the\font}\textfonti\accent"7F \next@#1#2}}
  88. \def~{\unskip\nobreak\ \ignorespaces}
  89. \def\.{.\spacefactor\@m}
  90. \atdef@;{\leavevmode\null;}
  91. \atdef@:{\leavevmode\null:}
  92. \atdef@?{\leavevmode\null?}
  93. \def\@{\char64 }
  94. \atdef@-{\leavevmode
  95.  \DN@{\ifx\next-\DN@-{\FN@\nextii@}\else
  96.   \DN@{\leavevmode\hbox{-}}\fi\next@}%
  97.  \DNii@{\ifx\next-\DN@-{\leavevmode\hbox{---}}\else
  98.   \DN@{\leavevmode\hbox{--}}\fi\next@}%
  99.  \FN@\next@}
  100. \def\srdr@{\kern.16667em}
  101. \def\drsr@{\kern.02778em}
  102. \def\sldl@{\kern.02778em}
  103. \def\dlsl@{\kern.16667em}
  104. \def\textfontii{\the\textfont\tw@}
  105. \def\lbrace@{\delimiter"4266308 }
  106. \def\rbrace@{\delimiter"5267309 }
  107. \def\{{\RIfM@\lbrace@\else{\textfontii f}\spacefactor\@m\fi}
  108. \def\}{\RIfM@\rbrace@\else
  109.  \let\@sf\empty\ifhmode\edef\@sf{\spacefactor\the\spacefactor}\fi
  110.  {\textfontii g}\@sf\relax\fi}
  111. \let\lbrace\{
  112. \let\rbrace\}
  113. \def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox
  114.  {\textfontii M}\kern-.125em{\textfontii S}-\TeX}
  115. \def\vmodeerr@#1{\Err@{\noexpand#1not allowed between paragraphs}}
  116. \def\mathmodeerr@#1{\Err@{\noexpand#1not allowed in math mode}}
  117. \def\slash{\unskip/\penalty\exhyphenpenalty}
  118. \newskip\saveskip@
  119. \def\dmatherr@#1{\Err@{\noexpand#1not allowed in display math mode}}
  120. \def\nondmatherr@#1{\Err@{\noexpand#1not allowed in non-display math
  121.  mode}}
  122. \def\onlydmatherr@#1{\Err@{\noexpand#1allowed only in display math mode}}
  123. \def\nonmatherr@#1{\Err@{\noexpand#1allowed only in math mode}}
  124. \def\mathbreak{\RIfMIfI@\break\else
  125.  \dmatherr@\mathbreak\fi\else\nonmatherr@\mathbreak\fi}
  126. \def\nomathbreak{\RIfMIfI@\nobreak\else
  127.  \dmatherr@\nomathbreak\fi\else\nonmatherr@\nomathbreak\fi}
  128. \def\allowmathbreak{\RIfMIfI@\allowbreak\else
  129.  \dmatherr@\allowmathbreak\fi\else\nonmatherr@\allowmathbreak\fi}
  130. \def\pagebreak{\RIfM@
  131.  \ifinner\nondmatherr@\pagebreak\else\postdisplaypenalty-\@M\fi
  132.  \else\ifvmode\removelastskip\break\else\vadjust{\break}\fi\fi}
  133. \def\nopagebreak{\RIfM@
  134.  \ifinner\nondmatherr@\nopagebreak\else\postdisplaypenalty\@M\fi
  135.  \else\ifvmode\nobreak\else\vadjust{\nobreak}\fi\fi}
  136. \def\nonvmodeerr@#1{\Err@{\noexpand#1not allowed within a paragraph
  137.  or in math}}
  138. \def\vnonvmode@#1#2{\DNii@{\ifx\next\par\DN@{#1}\else
  139.  \DN@{#2}\fi\next@}%
  140.  \ifvmode\DN@{#1}\else
  141.  \DN@{\FN@\nextii@}\fi\next@}
  142. \def\newpage{\vnonvmode@{\vfill\break}{\nonvmodeerr@\newpage}}
  143. \def\smallpagebreak{\vnonvmode@\smallbreak{\nonvmodeerr@\smallpagebreak}}
  144. \def\medpagebreak{\vnonvmode@\medbreak{\nonvmodeerr@\medpagebreak}}
  145. \def\bigpagebreak{\vnonvmode@\bigbreak{\nonvmodeerr@\bigpagebreak}}
  146. \def\NoBlackBoxes{\global\overfullrule\z@}
  147. \def\BlackBoxes{\global\overfullrule5\p@}
  148. \def\Invalid@#1{\def#1{\Err@{\Invalid@@\string#1}}}
  149. \def\Invalid@@{Invalid use of }
  150. \def\newcodes@{\catcode`\\=12 \catcode`\{=12 \catcode`\}=12 \catcode`\#=12
  151.  \catcode`\%=12\relax}
  152. \def\oldcodes@{\catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\#=6
  153.  \catcode`\%=14\relax}
  154. \def\comment{\newcodes@\endlinechar=10 \comment@}
  155. {\lccode`\0=`\\
  156. \lowercase{\gdef\comment@#1^^J{\comment@@#10endcomment\comment@@@}%
  157. \gdef\comment@@#10endcomment{\FN@\comment@@@}%
  158. \gdef\comment@@@#1\comment@@@{\ifx\next\comment@@@\let\next@\comment@
  159.  \else\def\next@{\oldcodes@\endlinechar=`\^^M\relax}%
  160.  \fi\next@}}}
  161. \def\pr@m@s{\ifx'\next\DN@##1{\prim@s}\else\let\next@\egroup\fi\next@}
  162. \def\prime{{\null\prime@\null}}
  163. \mathchardef\prime@="0230
  164. \let\dsize\displaystyle
  165. \let\tsize\textstyle
  166. \let\ssize\scriptstyle
  167. \let\sssize\scriptscriptstyle
  168. \def\,{\RIfM@\mskip\thinmuskip\relax\else\kern.16667em\fi}
  169. \def\!{\RIfM@\mskip-\thinmuskip\relax\else\kern-.16667em\fi}
  170. \let\thinspace\,
  171. \let\negthinspace\!
  172. \def\medspace{\RIfM@\mskip\medmuskip\relax\else\kern.222222em\fi}
  173. \def\negmedspace{\RIfM@\mskip-\medmuskip\relax\else\kern-.222222em\fi}
  174. \def\thickspace{\RIfM@\mskip\thickmuskip\relax\else\kern.27777em\fi}
  175. \let\;\thickspace
  176. \def\negthickspace{\RIfM@\mskip-\thickmuskip\relax\else
  177.  \kern-.27777em\fi}
  178. \atdef@,{\RIfM@\mskip.1\thinmuskip\else\leavevmode\null,\fi}
  179. \atdef@!{\RIfM@\mskip-.1\thinmuskip\else\leavevmode\null!\fi}
  180. \atdef@.{\leavevmode.\spacefactor3000 }
  181. \def\and{\DOTSB\;\mathchar"3026 \;}
  182. \def\implies{\DOTSB\;\Longrightarrow\;}
  183. \def\impliedby{\DOTSB\;\Longleftarrow\;}
  184. \def\frac#1#2{{#1\over#2}}
  185. \def\dfrac#1#2{{\displaystyle{#1\over#2}}}
  186. \def\tfrac#1#2{{\textstyle{#1\over#2}}}
  187. \newdimen\ex@
  188. \ex@.2326ex
  189. \Invalid@\thickness
  190. \def\thickfrac{\DN@{\ifx\next\thickness\let\next@\nextii@\else
  191.  \DN@{\nextii@\thickness1}\fi\next@}%
  192.  \DNii@\thickness##1##2##3{{##2\above##1\ex@##3}}%
  193.  \FN@\next@}
  194. \def\fracwithdelims#1#2#3#4{{#3\overwithdelims#1#2#4}}
  195. \def\thickfracwithdelims#1#2{\def\ldelim@{#1}\def\rdelim@{#2}%
  196.  \DN@{\ifx\next\thickness\let\next@\nextii@\else
  197.  \DN@{\nextii@\thickness1}\fi\next@}%
  198.  \DNii@\thickness##1##2##3{{##2\abovewithdelims
  199.  \ldelim@\rdelim@##1\ex@##3}}%
  200.  \FN@\next@}
  201. \def\binom#1#2{{#1\choose#2}}
  202. \def\dbinom#1#2{{\displaystyle{#1\choose#2}}}
  203. \def\tbinom#1#2{{\textstyle{#1\choose#2}}}
  204. \def\:{\nobreak\hskip.1111em\mathpunct{}\nonscript\mkern-\thinmuskip{:}\hskip
  205.  .3333emplus.0555em\relax}
  206. \def\snug{\unskip\kern-\mathsurround}
  207. \def\topsmash{\top@true\bot@false\smash@}
  208. \def\botsmash{\top@false\bot@true\smash@}
  209. \newif\iftop@
  210. \newif\ifbot@
  211. \def\smash{\top@true\bot@true\smash@}
  212. \def\smash@{\RIfM@\expandafter\mathpalette\expandafter\mathsm@sh\else
  213.  \expandafter\makesm@sh\fi}
  214. \def\finsm@sh{\iftop@\ht\z@\z@\fi\ifbot@\dp\z@\z@\fi\leavevmode\boxz@}
  215. \def\LimitsOnSums{\global\let\slimits@\displaylimits}
  216. \def\NoLimitsOnSums{\global\let\slimits@\nolimits}
  217. \LimitsOnSums
  218. \mathchardef\coprod@="1360       \def\coprod{\DOTSB\coprod@\slimits@}
  219. \mathchardef\bigvee@="1357       \def\bigvee{\DOTSB\bigvee@\slimits@}
  220. \mathchardef\bigwedge@="1356     \def\bigwedge{\DOTSB\bigwedge@\slimits@}
  221. \mathchardef\biguplus@="1355     \def\biguplus{\DOTSB\biguplus@\slimits@}
  222. \mathchardef\bigcap@="1354       \def\bigcap{\DOTSB\bigcap@\slimits@}
  223. \mathchardef\bigcup@="1353       \def\bigcup{\DOTSB\bigcup@\slimits@}
  224. \mathchardef\prod@="1351         \def\prod{\DOTSB\prod@\slimits@}
  225. \mathchardef\sum@="1350          \def\sum{\DOTSB\sum@\slimits@}
  226. \mathchardef\bigotimes@="134E    \def\bigotimes{\DOTSB\bigotimes@\slimits@}
  227. \mathchardef\bigoplus@="134C     \def\bigoplus{\DOTSB\bigoplus@\slimits@}
  228. \mathchardef\bigodot@="134A      \def\bigodot{\DOTSB\bigodot@\slimits@}
  229. \mathchardef\bigsqcup@="1346     \def\bigsqcup{\DOTSB\bigsqcup@\slimits@}
  230. \def\LimitsOnInts{\global\let\ilimits@\displaylimits}
  231. \def\NoLimitsOnInts{\global\let\ilimits@\nolimits}
  232. \NoLimitsOnInts
  233. \def\int{\DOTSI\intop\ilimits@}
  234. \def\oint{\DOTSI\ointop\ilimits@}
  235. \def\intic@{\mathchoice{\hskip.5em}{\hskip.4em}{\hskip.4em}{\hskip.4em}}
  236. \def\negintic@{\mathchoice
  237.  {\hskip-.5em}{\hskip-.4em}{\hskip-.4em}{\hskip-.4em}}
  238. \def\intkern@{\mathchoice{\!\!\!}{\!\!}{\!\!}{\!\!}}
  239. \def\intdots@{\mathchoice{\plaincdots@}
  240.  {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}}
  241.  {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}
  242.  {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}}
  243. \newcount\intno@
  244. \def\iint{\DOTSI\intno@\tw@\FN@\ints@}
  245. \def\iiint{\DOTSI\intno@\thr@@\FN@\ints@}
  246. \def\iiiint{\DOTSI\intno@4 \FN@\ints@}
  247. \def\idotsint{\DOTSI\intno@\z@\FN@\ints@}
  248. \def\ints@{\findlimits@\ints@@}
  249. \newif\iflimtoken@
  250. \newif\iflimits@
  251. \def\findlimits@{\limtoken@true\ifx\next\limits\limits@true
  252.  \else\ifx\next\nolimits\limits@false\else
  253.  \limtoken@false\ifx\ilimits@\nolimits\limits@false\else
  254.  \ifinner\limits@false\else\limits@true\fi\fi\fi\fi}
  255. \def\multint@{\int\ifnum\intno@=\z@\intdots@
  256.  \else\intkern@\fi
  257.  \ifnum\intno@>\tw@\int\intkern@\fi
  258.  \ifnum\intno@>\thr@@\int\intkern@\fi
  259.  \int}
  260. \def\multintlimits@{\intop\ifnum\intno@=\z@\intdots@\else\intkern@\fi
  261.  \ifnum\intno@>\tw@\intop\intkern@\fi
  262.  \ifnum\intno@>\thr@@\intop\intkern@\fi\intop}
  263. \def\ints@@{\iflimtoken@
  264.  \def\ints@@@{\iflimits@\negintic@\mathop{\intic@\multintlimits@}\limits
  265.   \else\multint@\nolimits\fi
  266.   \eat@}
  267.  \else
  268.  \def\ints@@@{\iflimits@\negintic@
  269.   \mathop{\intic@\multintlimits@}\limits\else
  270.   \multint@\nolimits\fi}\fi\ints@@@}
  271. \def\LimitsOnNames{\global\let\nlimits@\displaylimits}
  272. \def\NoLimitsOnNames{\global\let\nlimits@\nolimits@}
  273. \LimitsOnNames
  274. \def\nolimits@{\DN@{\ifx\next\limits\DN@\limits{\nolimits}\else
  275.   \let\next@\nolimits\fi\next@}%
  276.  \FN@\next@}
  277. \def\newmcodes@{\mathcode`\'="0027 \mathcode`\*="002A \mathcode`\.="613A
  278.  \mathcode`\-="002D \mathcode`\/="002F \mathcode`\:="603A }
  279. \def\operatorname#1{\mathop{\newmcodes@\kern\z@\fam\z@#1}\nolimits@}
  280. \def\operatornamewithlimits#1{\mathop{\newmcodes@\kern\z@\fam\z@#1}\nlimits@}
  281. \def\qopname@#1{\mathop{\fam\z@#1}\nolimits@}
  282. \def\qopnamewl@#1{\mathop{\fam\z@#1}\nlimits@}
  283. \def\arccos{\qopname@{arccos}}
  284. \def\arcsin{\qopname@{arcsin}}
  285. \def\arctan{\qopname@{arctan}}
  286. \def\arg{\qopname@{arg}}
  287. \def\cos{\qopname@{cos}}
  288. \def\cosh{\qopname@{cosh}}
  289. \def\cot{\qopname@{cot}}
  290. \def\coth{\qopname@{coth}}
  291. \def\csc{\qopname@{csc}}
  292. \def\deg{\qopname@{deg}}
  293. \def\det{\qopnamewl@{det}}
  294. \def\dim{\qopname@{dim}}
  295. \def\exp{\qopname@{exp}}
  296. \def\gcd{\qopnamewl@{gcd}}
  297. \def\hom{\qopname@{hom}}
  298. \def\inf{\qopnamewl@{inf}}
  299. \def\injlim{\qopnamewl@{inj\,lim}}
  300. \def\ker{\qopname@{ker}}
  301. \def\lg{\qopname@{lg}}
  302. \def\lim{\qopnamewl@{lim}}
  303. \def\liminf{\qopnamewl@{lim\,inf}}
  304. \def\limsup{\qopnamewl@{lim\,sup}}
  305. \def\ln{\qopname@{ln}}
  306. \def\log{\qopname@{log}}
  307. \def\max{\qopnamewl@{max}}
  308. \def\min{\qopnamewl@{min}}
  309. \def\Pr{\qopnamewl@{Pr}}
  310. \def\projlim{\qopnamewl@{proj\,lim}}
  311. \def\sec{\qopname@{sec}}
  312. \def\sin{\qopname@{sin}}
  313. \def\sinh{\qopname@{sinh}}
  314. \def\sup{\qopnamewl@{sup}}
  315. \def\tan{\qopname@{tan}}
  316. \def\tanh{\qopname@{tanh}}
  317. \def\varinjlim{\mathop{\vtop{\ialign{##\crcr
  318.  \hfil\rm lim\hfil\crcr\noalign{\nointerlineskip}\rightarrowfill\crcr
  319.  \noalign{\nointerlineskip\kern-\ex@}\crcr}}}}
  320. \def\varprojlim{\mathop{\vtop{\ialign{##\crcr
  321.  \hfil\rm lim\hfil\crcr\noalign{\nointerlineskip}\leftarrowfill\crcr
  322.  \noalign{\nointerlineskip\kern-\ex@}\crcr}}}}
  323. \def\varliminf{\mathop{\underline{\vrule\height\z@\depth.2ex\width\z@
  324.  \hbox{\rm lim}}}}
  325. \def\varlimsup{\mathop{\overline{\hbox{\rm lim}}}}
  326. \newdimen\buffer@
  327. \buffer@\fontdimen13 \tenex
  328. \newdimen\buffer
  329. \buffer\buffer@
  330. \def\ChangeBuffer#1{\fontdimen13 \tenex#1\relax
  331.  \global\buffer\fontdimen13 \tenex}
  332. \def\ResetBuffer{\fontdimen13 \tenex\buffer@\global\buffer\buffer@}
  333. \def\shave#1{\mathop{\hbox{$\m@th\fontdimen13 \tenex\z@
  334.  \displaystyle{#1}$}}\fontdimen13 \tenex\buffer}
  335. \def\topshave#1{\mathop{\topsmash{\displaystyle{#1}}\vphantom{\shave{#1}}}}
  336. \def\botshave#1{\mathop{\botsmash{\displaystyle{#1}}\vphantom{\shave{#1}}}}
  337. \Invalid@\\
  338. \def\Let@{\relax\iffalse{\fi\let\\\cr\iffalse}\fi}
  339. \Invalid@\vspace
  340. \def\vspace@{\def\vspace##1{\crcr\noalign{\vskip##1\relax}}}
  341. \def\multilimits@{\bgroup\vspace@\Let@
  342.  \baselineskip\fontdimen10 \scriptfont\tw@
  343.  \advance\baselineskip\fontdimen12 \scriptfont\tw@
  344.  \lineskip\thr@@\fontdimen8 \scriptfont\thr@@
  345.  \lineskiplimit\lineskip
  346.  \vbox\bgroup\ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil\crcr}
  347. \def\Sb{_\multilimits@}
  348. \def\endSb{\crcr\egroup\egroup\egroup}
  349. \def\Sp{^\multilimits@}
  350. \let\endSp\endSb
  351. \def\spreadlines#1{\RIfMIfI@\onlydmatherr@\spreadlines\else
  352.  \openup#1\relax\fi\else\onlydmatherr@\spreadlines\fi}
  353. \def\Mathstrut@{\copy\Mathstrutbox@}
  354. \newbox\Mathstrutbox@
  355. \setbox\Mathstrutbox@\null
  356. \setbox\z@\hbox{$\m@th($}
  357. \ht\Mathstrutbox@\ht\z@
  358. \dp\Mathstrutbox@\dp\z@
  359. \newdimen\spreadmlines@
  360. \def\spreadmatrixlines#1{\RIfMIfI@
  361.  \onlydmatherr@\spreadmatrixlines\else
  362.  \spreadmlines@#1\relax\fi\else\onlydmatherr@\spreadmatrixlines\fi}
  363. \def\matrix{\null\,\vcenter\bgroup\Let@\vspace@
  364.  \normalbaselines\openup\spreadmlines@\ialign
  365.  \bgroup\hfil$\m@th##$\hfil&&\quad\hfil$\m@th##$\hfil\crcr
  366.  \Mathstrut@\crcr\noalign{\kern-\baselineskip}}
  367. \def\endmatrix{\crcr\Mathstrut@\crcr\noalign{\kern-\baselineskip}\egroup
  368.  \egroup\,}
  369. \def\format{\crcr\egroup\iffalse{\fi\ifnum`}=0 \fi\format@}
  370. \newtoks\hashtoks@
  371. \hashtoks@{#}
  372. \def\format@#1\\{\def\preamble@{#1}%
  373.  \def\l{$\m@th\the\hashtoks@$\hfil}%
  374.  \def\c{\hfil$\m@th\the\hashtoks@$\hfil}%
  375.  \def\r{\hfil$\m@th\the\hashtoks@$}%
  376.  \edef\Preamble@{\preamble@}\ifnum`{=0 \fi\iffalse}\fi
  377.  \ialign\bgroup\span\Preamble@\crcr}
  378. \def\smallmatrix{\null\,\vcenter\bgroup\vspace@\Let@
  379.  \baselineskip9\ex@\lineskip\ex@
  380.  \ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil&&\thickspace\hfil
  381.  $\m@th\scriptstyle{##}$\hfil\crcr}
  382. \def\endsmallmatrix{\crcr\egroup\egroup\,}
  383. \def\pmatrix{\left(\matrix}
  384. \def\endpmatrix{\endmatrix\right)}
  385. \def\bmatrix{\left[\matrix}
  386. \def\endbmatrix{\endmatrix\right]}
  387. \def\vmatrix{\left|\matrix}
  388. \def\endvmatrix{\endmatrix\right|}
  389. \def\Vmatrix{\left\|\matrix}
  390. \def\endVmatrix{\endmatrix\right\|}
  391. \def\hdots{\mathinner{\ldotp\ldotp\ldotp}}
  392. \newmuskip\dotsspace@
  393. \dotsspace@1.5mu
  394. \def\strip@#1 {#1}
  395. \def\spacehdots#1\for#2{\multispan{#2}\xleaders
  396.  \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill}
  397. \def\hdotsfor#1{\spacehdots\@ne\for{#1}}
  398. \def\multispan@#1{\omit\mscount#1\unskip\loop\ifnum\mscount>\@ne\sp@n\repeat}
  399. \def\spaceinnerhdots#1\for#2\after#3{\multispan@{\strip@#2 }#3\xleaders
  400.  \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill}
  401. \def\innerhdotsfor#1\after#2{\spaceinnerhdots\@ne\for#1\after{#2}}
  402. \def\cases{\bgroup\spreadmlines@\jot\left\{\,\matrix\format\l&\quad\l\\}
  403. \def\endcases{\endmatrix\right.\egroup}
  404. \newif\ifinany@
  405. \newif\ifinalign@
  406. \newif\ifingather@
  407. \def\strut@{\copy\strutbox@}
  408. \newbox\strutbox@
  409. \setbox\strutbox@\hbox{\vrule\height8\p@\depth3\p@\width\z@}
  410. \def\topaligned{\null\,\vtop\aligned@}
  411. \def\botaligned{\null\,\vbox\aligned@}
  412. \def\aligned{\null\,\vcenter\aligned@}
  413. \def\aligned@{\bgroup\vspace@\Let@
  414.  \ifinany@\else\openup\jot\fi\ialign
  415.  \bgroup\hfil\strut@$\m@th\displaystyle{##}$&
  416.  $\m@th\displaystyle{{}##}$\hfil\crcr}
  417. \def\endaligned{\crcr\egroup\egroup}
  418. \let\endtopaligned\endaligned
  419. \let\endbotaligned\endaligned
  420. \def\alignedat#1{\null\,\vcenter\bgroup\doat@{#1}\vspace@\Let@
  421.  \ifinany@\else\openup\jot\fi\ialign\bgroup\span\preamble@@\crcr}
  422. \newcount\atcount@
  423. \def\doat@#1{\toks@{\hfil\strut@$\m@th
  424.  \displaystyle{\the\hashtoks@}$&$\m@th\displaystyle
  425.  {{}\the\hashtoks@}$\hfil}%
  426.  \atcount@#1\relax\advance\atcount@\m@ne
  427.  \loop\ifnum\atcount@>\z@\toks@=\expandafter{\the\toks@&\hfil$\m@th
  428.  \displaystyle{\the\hashtoks@}$&$\m@th
  429.  \displaystyle{{}\the\hashtoks@}$\hfil}\advance\atcount@\m@ne\repeat
  430.  \edef\preamble@{\the\toks@}\edef\preamble@@{\preamble@}}
  431. \let\endalignedat\endaligned
  432. \def\gathered{\null\,\vcenter\bgroup\vspace@\Let@
  433.  \ifinany@\else\openup\jot\fi\ialign
  434.  \bgroup\hfil\strut@$\m@th\displaystyle{##}$\hfil\crcr}
  435. \def\endgathered{\crcr\egroup\egroup}
  436. \newif\iftagsleft@
  437. \def\TagsOnLeft{\global\tagsleft@true}
  438. \def\TagsOnRight{\global\tagsleft@false}
  439. \TagsOnLeft
  440. \newif\ifmathtags@
  441. \def\TagsAsMath{\global\mathtags@true}
  442. \def\TagsAsText{\global\mathtags@false}
  443. \TagsAsText
  444. \def\tag#1$${\iftagsleft@\leqno\else\eqno\fi\maketag@#1\maketag@$$}
  445. \interdisplaylinepenalty\@M
  446. \def\allowdisplaybreaks{\RIfMIfI@
  447.  \onlydmatherr@\allowdisplaybreaks\else
  448.  \interdisplaylinepenalty\z@\fi\else\onlydmatherr@\allowdisplaybreaks\fi}
  449. \Invalid@\allowdisplaybreak
  450. \Invalid@\displaybreak
  451. \Invalid@\intertext
  452. \def\allowdisplaybreak@{\def\allowdisplaybreak{\crcr\noalign{\allowbreak}}}
  453. \def\displaybreak@{\def\displaybreak{\crcr\noalign{\break}}}
  454. \def\intertext@{\def\intertext##1{\crcr\noalign{\vskip\belowdisplayskip
  455.  \vbox{\normalbaselines\noindent##1}\vskip\abovedisplayskip}}}
  456. \newskip\centering@
  457. \centering@\z@ plus\@m\p@
  458. \def\align{\relax\ifingather@\DN@{\csname align (in
  459.   \expandafter\eat@\string\\gather)\endcsname}\else
  460.  \ifmmode\ifinner\DN@{\onlydmatherr@\align}\else
  461.   \let\next@\align@\fi
  462.  \else\DN@{\onlydmatherr@\align}\fi\fi\next@}
  463. \newhelp\andhelp@
  464. {An extra & here is so disastrous that you should probably exit^^J
  465. and fix things up.}
  466. \newif\iftag@
  467. \newcount\and@
  468. \def\Tag@{\iftag@\else\errhelp\andhelp@\err@{Extra & on this line}\fi}
  469. \newdimen\lwidth@
  470. \newdimen\rwidth@
  471. \newdimen\maxlwidth@
  472. \newdimen\maxrwidth@
  473. \newdimen\totwidth@
  474. \def\displ@y@{\global\dt@ptrue\openup\jot
  475.  \everycr{\noalign{\global\tag@false\global\and@\z@\ifdt@p\global\dt@pfalse
  476.  \vskip-\lineskiplimit\vskip\normallineskiplimit\else
  477.  \penalty\interdisplaylinepenalty\fi}}}
  478. \def\black@#1{\noalign{\ifdim#1>\displaywidth
  479.  \dimen@\prevdepth\nointerlineskip
  480.  \vskip-\ht\strutbox@\vskip-\dp\strutbox@
  481.  \vbox{\noindent\hbox to#1{\strut@\hfill}}%
  482.  \prevdepth\dimen@
  483.  \fi}}
  484. \newdimen\lineht@
  485. \expandafter\def\csname align (in \expandafter\eat@\string\\gather)\endcsname
  486.   #1\endalign{\vcenter{\align@#1\endalign}}
  487. \Invalid@\endalign
  488. \newif\ifxat@
  489. \def\alignat{\RIfMIfI@\DN@{\onlydmatherr@\alignat}\else
  490.  \DN@{\csname alignat \endcsname}\fi\else
  491.  \DN@{\onlydmatherr@\alignat}\fi\next@}
  492. \newif\ifmeasuring@
  493. \newbox\savealignat@
  494. \Invalid@\endalignat
  495. \def\xalignat{\RIfMIfI@
  496.  \DN@{\onlydmatherr@\xalignat}\else
  497.  \DN@{\csname xalignat \endcsname}\fi\else
  498.  \DN@{\onlydmatherr@\xalignat}\fi\next@}
  499. \Invalid@\endxalignat
  500. \def\xxalignat{\RIfMIfI@
  501.  \DN@{\onlydmatherr@\xxalignat}\else\DN@{\csname xxalignat
  502.   \endcsname}\fi\else
  503.  \DN@{\onlydmatherr@\xxalignat}\fi\next@}
  504. \expandafter\def\csname xxalignat \endcsname#1#2\endxxalignat{\inany@true
  505.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  506.  \displ@y\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
  507.  \xxattag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
  508.  \Let@\xxattag@{#1}\tabskip\z@skip\halign to\displaywidth
  509.  {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
  510. \def\xxattag@#1{\toks@{\tabskip\z@skip\hfil\strut@
  511.  $\m@th\displaystyle{\the\hashtoks@}$&%
  512.  $\m@th\displaystyle{{}\the\hashtoks@}$\hfil\tabskip\centering@&}%
  513.  \atcount@#1\relax\advance\atcount@\m@ne\loop\ifnum\atcount@>\z@
  514.  \toks@=\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\the\hashtoks@}$%
  515.   \tabskip\z@skip&$\m@th\displaystyle{{}\the\hashtoks@}$\hfil
  516.   \tabskip\centering@}\advance\atcount@\m@ne\repeat
  517.  \edef\preamble@{\the\toks@\tabskip\z@skip}\edef\preamble@@{\preamble@}}
  518. \Invalid@\endxxalignat
  519. \newdimen\gwidth@
  520. \newdimen\gmaxwidth@
  521. \def\gmeasure@#1\endgather{\global\gwidth@\z@\global\gmaxwidth@\z@
  522.  \setbox\z@\vbox{\Let@
  523.  \halign{\setboxz@h{$\m@th\displaystyle{##}$}\global\gwidth@\wdz@
  524.  \ifdim\gwidth@>\gmaxwidth@\global\gmaxwidth@\gwidth@\fi
  525.  &\eat@{##}\crcr#1\crcr}}}
  526. \expandafter\def\csname gather \space\endcsname#1\endgather
  527.  {\gmeasure@#1\endgather\tabskip\centering@
  528.  \halign to\displaywidth{\hfil\strut@\setboxz@h{$\m@th\displaystyle{##}$}%
  529.  \global\gwidth@\wdz@\boxz@\hfil&
  530.  \setboxz@h{\strut@{\maketag@##\maketag@}}%
  531.  \dimen@\displaywidth\advance\dimen@-\gwidth@
  532.  \ifdim\dimen@>\tw@\wdz@\llap{\boxz@}\else
  533.  \llap{\vtop{\normalbaselines\null\boxz@}}\fi
  534.  \tabskip\z@skip\crcr#1\crcr\black@\gmaxwidth@}}
  535. \newdimen\glineht@
  536. \expandafter\def\csname gather \endcsname#1\endgather{\gmeasure@#1\endgather
  537.  \ifdim\gmaxwidth@>\displaywidth\let\gdisplaywidth@\gmaxwidth@\else
  538.  \let\gdisplaywidth@\displaywidth\fi\tabskip\centering@\halign to\displaywidth
  539.  {\hfil\strut@\setboxz@h{$\m@th\displaystyle{##}$}%
  540.  \global\gwidth@\wdz@\global\glineht@\ht\z@\boxz@\hfil&\kern-\gdisplaywidth@
  541.  \setboxz@h{\strut@{\maketag@##\maketag@}}%
  542.  \dimen@\displaywidth\advance\dimen@-\gwidth@
  543.  \ifdim\dimen@>\tw@\wdz@\rlap{\boxz@}\else
  544.  \rlap{\vbox{\normalbaselines\boxz@\vbox to\glineht@{}}}\fi
  545.  \tabskip\gdisplaywidth@\crcr#1\crcr\black@\gmaxwidth@}}
  546. \newif\ifctagsplit@
  547. \def\CenteredTagsOnSplits{\global\ctagsplit@true}
  548. \def\TopOrBottomTagsOnSplits{\global\ctagsplit@false}
  549. \TopOrBottomTagsOnSplits
  550. \def\split{\relax\ifinany@\let\next@\insplit@\else
  551.  \ifmmode\ifinner\def\next@{\onlydmatherr@\split}\else
  552.  \let\next@\outsplit@\fi\else
  553.  \def\next@{\onlydmatherr@\split}\fi\fi\next@}
  554. \def\insplit@{\global\setbox9=\vbox\bgroup\vspace@\Let@\ialign\bgroup
  555.  \hfil\strut@$\m@th\displaystyle{##}$&$\m@th\displaystyle{{}##}$\hfill\crcr}
  556. \def\endsplit{\crcr\egroup\egroup\iftagsleft@\expandafter\lendsplit@\else
  557.  \expandafter\rendsplit@\fi}
  558. \def\rendsplit@{\global\setbox\@ne\vbox
  559.  {\unvcopy9 \global\setbox\thr@@\lastbox\unskip}%
  560.  \setboxz@h{\unhcopy\thr@@\unskip\global\setbox\thr@@\lastbox
  561.   \unskip\global\setbox5=\lastbox}%
  562.  \global\setbox7=\hbox{\unhbox\thr@@\unskip}%
  563.  \ifinalign@\ifctagsplit@
  564.   \gdef\split@{\hbox to\wd5 {}&
  565.    \vcenter{\vbox{\moveleft\wd5 \box9}}}%
  566.  \else\gdef\split@{&\vbox{\moveleft\wd5 \box\@ne}\crcr
  567.   \box5 &\box7}\fi
  568.  \else
  569.   \ifctagsplit@\gdef\split@{\vcenter{\box9}}\else
  570.   \gdef\split@{\box\@ne\crcr\hbox{\box\thr@@\box7}}\fi
  571.  \fi
  572.  \split@}
  573. \def\lendsplit@{\global\setbox\@ne\vtop{\unvcopy9}%
  574.  \setbox\z@\vbox{\unvcopy9 \global\setbox\thr@@\lastbox}%
  575.  \setboxz@h{\unhcopy\thr@@\unskip\setbox\z@\lastbox
  576.   \unskip\global\setbox\thr@@\lastbox}%
  577.  \ifinalign@\ifctagsplit@
  578.   \gdef\split@{\hbox to\wd\thr@@{}&
  579.   \vcenter{\vbox{\moveleft\wd\thr@@\box\@ne}}}%
  580.   \else
  581.   \gdef\split@{\hbox to\wd\thr@@{}&\vbox{\moveleft\wd\thr@@\box\@ne}}\fi
  582.  \else
  583.   \ifctagsplit@\gdef\split@{\vcenter{\box\@ne}}\else
  584.   \gdef\split@{\box\@ne}\fi
  585.  \fi\split@}
  586. \def\outsplit@#1$${\align\insplit@#1\endalign$$}
  587. \newdimen\multlinegap@
  588. \multlinegap@1em
  589. \newdimen\multlinetaggap@
  590. \multlinetaggap@1em
  591. \def\MultlineGap#1{\global\multlinegap@#1\relax}
  592. \def\multlinegap#1{\RIfMIfI@\onlydmatherr@\multlinegap\else
  593.  \multlinegap@#1\relax\fi\else\onlydmatherr@\multlinegap\fi}
  594. \def\nomultlinegap{\multlinegap{\z@}}
  595. \def\multline{\RIfMIfI@
  596.  \DN@{\onlydmatherr@\multline}\else
  597.  \DN@{\multline@}\fi\else
  598.  \DN@{\onlydmatherr@\multline}\fi\next@}
  599. \newif\iftagin@
  600. \def\multline@#1$${\inany@true\vspace@\allowdisplaybreak@\displaybreak@
  601.  \tagin@{#1}\iftagsleft@\DN@{\multline@l#1$$}\else
  602.  \DN@{\multline@r#1$$}\fi\next@}
  603. \newdimen\mwidth@
  604. \def\rmmeasure@#1\endmultline{%
  605.  \def\shoveleft##1{##1}\def\shoveright##1{##1}%
  606.  \setbox\z@\vbox{\Let@\halign{\setboxz@h
  607.   {$\m@th\@lign\displaystyle{}##$}\global\mwidth@\wdz@
  608.   \crcr#1\crcr}}}
  609. \newdimen\mlineht@
  610. \newif\ifzerocr@
  611. \newif\ifonecr@
  612. \def\lmmeasure@#1\endmultline{\global\zerocr@true\global\onecr@false
  613.  \everycr{\noalign{\ifonecr@\global\onecr@false\fi
  614.   \ifzerocr@\global\zerocr@false\global\onecr@true\fi}}%
  615.   \def\shoveleft##1{##1}\def\shoveright##1{##1}%
  616.  \setbox\z@\vbox{\Let@\halign{\setboxz@h
  617.   {$\m@th\@lign\displaystyle{}##$}\ifonecr@\global\mwidth@\wdz@
  618.   \global\mlineht@\ht\z@\fi\crcr#1\crcr}}}
  619. \newbox\mtagbox@
  620. \newdimen\ltwidth@
  621. \newdimen\rtwidth@
  622. \def\multline@l#1$${\iftagin@\DN@{\lmultline@@#1$$}\else
  623.  \DN@{\setbox\mtagbox@\null\ltwidth@\z@\rtwidth@\z@
  624.   \lmultline@@@#1$$}\fi\next@}
  625. \def\lmultline@@#1\endmultline\tag#2$${%
  626.  \setbox\mtagbox@\hbox{\maketag@#2\maketag@}%
  627.  \lmmeasure@#1\endmultline\dimen@\mwidth@\advance\dimen@\wd\mtagbox@
  628.  \advance\dimen@\multlinetaggap@
  629.  \ifdim\dimen@>\displaywidth\ltwidth@\z@\else\ltwidth@\wd\mtagbox@\fi
  630.  \lmultline@@@#1\endmultline$$}
  631. \def\lmultline@@@{\displ@y
  632.  \def\shoveright##1{##1\hfilneg\hskip\multlinegap@}%
  633.  \def\shoveleft##1{\setboxz@h{$\m@th\displaystyle{}##1$}%
  634.   \setbox\tw@\hbox{$\m@th\displaystyle##1$}%
  635.   \hfilneg
  636.   \iftagin@
  637.    \ifdim\ltwidth@>\z@\hskip\ltwidth@\hskip\multlinetaggap@\fi
  638.   \else\hskip\multlinegap@\fi\hskip.5\wd\tw@\hskip-.5\wdz@##1}%
  639.   \halign\bgroup\Let@\hbox to\displaywidth
  640.    {\strut@$\m@th\displaystyle\hfil{}##\hfil$}\crcr
  641.    \hfilneg
  642.    \iftagin@
  643.     \ifdim\ltwidth@>\z@
  644.      \box\mtagbox@\hskip\multlinetaggap@
  645.     \else
  646.      \rlap{\vbox{\normalbaselines\hbox{\strut@\box\mtagbox@}%
  647.      \vbox to\mlineht@{}}}\fi
  648.    \else\hskip\multlinegap@\fi}
  649. \def\multline@r#1$${\iftagin@\DN@{\rmultline@@#1$$}\else
  650.  \DN@{\setbox\mtagbox@\null\ltwidth@\z@\rtwidth@\z@
  651.   \rmultline@@@#1$$}\fi\next@}
  652. \def\rmultline@@#1\endmultline\tag#2$${\ltwidth@\z@
  653.  \setbox\mtagbox@\hbox{\maketag@#2\maketag@}%
  654.  \rmmeasure@#1\endmultline\dimen@\mwidth@\advance\dimen@\wd\mtagbox@
  655.  \advance\dimen@\multlinetaggap@
  656.  \ifdim\dimen@>\displaywidth\rtwidth@\z@\else\rtwidth@\wd\mtagbox@\fi
  657.  \rmultline@@@#1\endmultline$$}
  658. \def\rmultline@@@{\displ@y
  659.  \def\shoveright##1{##1\hfilneg\iftagin@\ifdim\rtwidth@>\z@
  660.   \hskip\rtwidth@\hskip\multlinetaggap@\fi\else\hskip\multlinegap@\fi}%
  661.  \def\shoveleft##1{\setboxz@h{$\m@th\displaystyle{}##1$}%
  662.   \setbox\tw@\hbox{$\m@th\displaystyle##1$}%
  663.   \hfilneg\hskip\multlinegap@\hskip.5\wd\tw@\hskip-.5\wdz@##1}%
  664.  \halign\bgroup\Let@\hbox to\displaywidth
  665.   {\strut@$\m@th\displaystyle\hfil{}##\hfil$}\crcr
  666.  \hfilneg\hskip\multlinegap@}
  667. \def\endmultline{\iftagsleft@\expandafter\lendmultline@\else
  668.  \expandafter\rendmultline@\fi}
  669. \def\lendmultline@{\hfilneg\hskip\multlinegap@\crcr\egroup}
  670. \def\rendmultline@{\iftagin@
  671.  \ifdim\rtwidth@>\z@
  672.   \hskip\multlinetaggap@\box\mtagbox@
  673.  \else\llap{\vtop{\normalbaselines\null\hbox{\strut@\box\mtagbox@}}}\fi
  674.  \else\hskip\multlinegap@\fi
  675.  \hfilneg\crcr\egroup}
  676. \def\bmod{\mskip-\medmuskip\mkern5mu\mathbin{\fam\z@ mod}\penalty900
  677.  \mkern5mu\mskip-\medmuskip}
  678. \def\pmod#1{\allowbreak\ifinner\mkern8mu\else\mkern18mu\fi
  679.  ({\fam\z@ mod}\,\,#1)}
  680. \def\pod#1{\allowbreak\ifinner\mkern8mu\else\mkern18mu\fi(#1)}
  681. \def\mod#1{\allowbreak\ifinner\mkern12mu\else\mkern18mu\fi{\fam\z@ mod}\,\,#1}
  682. \newcount\cfraccount@
  683. \def\cfrac{\bgroup\bgroup\global\advance\cfraccount@\@ne\strut
  684.  \iffalse{\fi\def\\{\over\displaystyle}\iffalse}\fi}
  685. \def\lcfrac{\bgroup\bgroup\global\advance\cfraccount@\@ne\strut
  686.  \iffalse{\fi\def\\{\hfill\over\displaystyle}\iffalse}\fi}
  687. \def\rcfrac{\bgroup\bgroup\global\advance\cfraccount@\@ne\strut\hfill
  688.  \iffalse{\fi\def\\{\over\displaystyle}\iffalse}\fi}
  689. \def\endcfrac{\gloop@\ifnum\cfraccount@>\z@\global\advance\cfraccount@\m@ne
  690.  \egroup\hskip-\nulldelimiterspace\egroup\repeat}
  691. \def\binrel@#1{\setboxz@h{\thinmuskip0mu
  692.   \medmuskip\m@ne mu\thickmuskip\@ne mu$#1\m@th$}%
  693.  \setbox\tw@\hbox{\thinmuskip0mu\medmuskip\m@ne mu\thickmuskip
  694.   \@ne mu${}#1{}\m@th$}%
  695.  \setbox\tw@\hbox{\hskip\wd\tw@\hskip-\wdz@}}
  696. \def\overset#1\to#2{\binrel@{#2}\ifdim\wd\tw@<\z@
  697.  \mathbin{\mathop{\kern\z@#2}\limits^{#1}}\else\ifdim\wd\tw@>\z@
  698.  \mathrel{\mathop{\kern\z@#2}\limits^{#1}}\else
  699.  {\mathop{\kern\z@#2}\limits^{#1}}{}\fi\fi}
  700. \def\underset#1\to#2{\binrel@{#2}\ifdim\wd\tw@<\z@
  701.  \mathbin{\mathop{\kern\z@#2}\limits_{#1}}\else\ifdim\wd\tw@>\z@
  702.  \mathrel{\mathop{\kern\z@#2}\limits_{#1}}\else
  703.  {\mathop{\kern\z@#2}\limits_{#1}}{}\fi\fi}
  704. \def\oversetbrace#1\to#2{\overbrace{#2}^{#1}}
  705. \def\undersetbrace#1\to#2{\underbrace{#2}_{#1}}
  706. \def\sideset#1\and#2\to#3{%
  707.  \setboxz@h{$\dsize{\vphantom{#3}}#1{#3}\m@th$}%
  708.  \setbox\tw@\hbox{$\dsize{#3}#2\m@th$}%
  709.  \hskip\wdz@\hskip-\wd\tw@\mathop{\hskip\wd\tw@\hskip-\wdz@
  710.   {\vphantom{#3}}#1{#3}#2}}
  711. \def\rightarrowfill@#1{$#1\m@th\mathord-\mkern-6mu\cleaders
  712.  \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill
  713.  \mkern-6mu\mathord\rightarrow$}
  714. \def\leftarrowfill@#1{$#1\m@th\mathord\leftarrow\mkern-6mu\cleaders
  715.  \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill\mkern-6mu\mathord-$}
  716. \def\leftrightarrowfill@#1{$#1\m@th\mathord\leftarrow\mkern-6mu\cleaders
  717.  \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill
  718.  \mkern-6mu\mathord\rightarrow$}
  719. \def\overrightarrow{\mathpalette\overrightarrow@}
  720. \def\overrightarrow@#1#2{\vbox{\ialign{##\crcr\rightarrowfill@#1\crcr
  721.  \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}
  722. \let\overarrow\overrightarrow
  723. \def\overleftarrow{\mathpalette\overleftarrow@}
  724. \def\overleftarrow@#1#2{\vbox{\ialign{##\crcr\leftarrowfill@#1\crcr
  725.  \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}
  726. \def\overleftrightarrow{\mathpalette\overleftrightarrow@}
  727. \def\overleftrightarrow@#1#2{\vbox{\ialign{##\crcr\leftrightarrowfill@#1\crcr
  728.  \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}
  729. \def\underrightarrow{\mathpalette\underrightarrow@}
  730. \def\underrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr
  731.  \noalign{\nointerlineskip}\rightarrowfill@#1\crcr}}}
  732. \let\underarrow\underrightarrow
  733. \def\underleftarrow{\mathpalette\underleftarrow@}
  734. \def\underleftarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr
  735.  \noalign{\nointerlineskip}\leftarrowfill@#1\crcr}}}
  736. \def\underleftrightarrow{\mathpalette\underleftrightarrow@}
  737. \def\underleftrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr
  738.  \noalign{\nointerlineskip}\leftrightarrowfill@#1\crcr}}}
  739. \let\DOTSI\relax
  740. \let\DOTSB\relax
  741. \let\DOTSX\relax
  742. \newif\ifmath@
  743. {\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`!=`h
  744.  \uppercase{\gdef\math@#1#2#3#4#5#6\math@{\global\math@false\ifx 7#1\ifx 8#2%
  745.  \ifx 9#3\ifx 0#4\ifx !#5\xdef\meaning@{#6}\global\math@true\fi\fi\fi\fi\fi}}}
  746. \newif\ifmathch@
  747. {\uccode`7=`c \uccode`8=`h \uccode`9=`\"
  748.  \uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\global\mathch@false
  749.   \ifx 7#1\ifx 8#2\ifx 9#5\global\mathch@true\xdef\meaning@{9#6}\fi\fi\fi}}}
  750. \newcount\classnum@
  751. \def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum@4096
  752.  \ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or
  753.  \gdef\thedots@{\dotsb@}\fi}
  754. \newif\ifmathbin@
  755. {\uccode`4=`b \uccode`5=`i \uccode`6=`n
  756.  \uppercase{\gdef\mathbin@#1#2#3{%
  757.   \DNii@##1\mathbin@{\ifx\space@\next\global\mathbin@true\fi}%
  758.  \global\mathbin@false\DN@##1\mathbin@{}%
  759.  \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
  760. \newif\ifmathrel@
  761. {\uccode`4=`r \uccode`5=`e \uccode`6=`l
  762.  \uppercase{\gdef\mathrel@#1#2#3{%
  763.   \DNii@##1\mathrel@{\ifx\space@\next\global\mathrel@true\fi}%
  764.  \global\mathrel@false\DN@##1\mathrel@{}%
  765.  \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
  766. \newif\ifmacro@
  767. {\uccode`5=`m \uccode`6=`a \uccode`7=`c
  768.  \uppercase{\gdef\macro@#1#2#3#4\macro@{\global\macro@false
  769.   \ifx 5#1\ifx 6#2\ifx 7#3\global\macro@true
  770.   \xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}}
  771. \def\macro@@#1->#2\macro@@{#2}
  772. \newif\ifDOTS@
  773. \newcount\DOTSCASE@
  774. {\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S
  775.  \uppercase{\gdef\DOTS@#1#2#3#4#5{\global\DOTS@false\DN@##1\DOTS@{}%
  776.   \ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next@\DOTS@@\fi\fi\fi\fi\fi
  777.   \next@}}}
  778. {\uccode`3=`B \uccode`4=`I \uccode`5=`X
  779.  \uppercase{\gdef\DOTS@@#1{%
  780.   \DNii@##1\DOTS@{\ifx\space@\next\global\DOTS@true\fi}%
  781.   \DN@{\FN@\nextii@}%
  782.   \ifx 3#1\global\DOTSCASE@\z@\else
  783.   \ifx 4#1\global\DOTSCASE@\@ne\else
  784.   \ifx 5#1\global\DOTSCASE@\tw@\else\DN@##1\DOTS@{}%
  785.   \fi\fi\fi\next@}}}
  786. \newif\ifnot@
  787. {\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t
  788.  \uppercase{\gdef\not@#1#2#3#4{%
  789.   \DNii@##1\not@{\ifx\space@\next\global\not@true\fi}%
  790.  \global\not@false\DN@##1\not@{}%
  791.  \ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\DN@{\FN@\nextii@}\fi\fi\fi
  792.  \fi\next@}}}
  793. \newif\ifkeybin@
  794. \def\dots{\RIfM@\expandafter\mdots@\else\expandafter\tdots@\fi}
  795. \def\mdots@{\FN@\mdots@@}
  796. \def\mdots@@{\gdef\thedots@{\dotso@}%
  797.  \ifx\next\boldkey\gdef\thedots@\boldkey{\boldkeydots@}\else
  798.  \ifx\next\boldsymbol\gdef\thedots@\boldsymbol{\boldsymboldots@}\else
  799.  \ifx,\next\gdef\thedots@{\dotsc}%
  800.  \else\ifx\not\next\gdef\thedots@{\dotsb@}%
  801.  \else\keybin@
  802.  \ifkeybin@\gdef\thedots@{\dotsb@}%
  803.  \else\xdef\meaning@{\meaning\next..........}\xdef\meaning@@{\meaning@}%
  804.   \expandafter\math@\meaning@\math@
  805.   \ifmath@
  806.    \expandafter\mathch@\meaning@\mathch@
  807.    \ifmathch@\expandafter\getmathch@\meaning@\getmathch@\fi
  808.   \else\expandafter\macro@\meaning@@\macro@
  809.   \ifmacro@
  810.    \expandafter\not@\meaning@\not@\ifnot@\gdef\thedots@{\dotsb@}%
  811.   \else\expandafter\DOTS@\meaning@\DOTS@
  812.   \ifDOTS@
  813.    \ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}%
  814.     \or\gdef\thedots@{\dotsi}\else\fi
  815.   \else\expandafter\math@\meaning@\math@
  816.   \ifmath@\expandafter\mathbin@\meaning@\mathbin@
  817.   \ifmathbin@\gdef\thedots@{\dotsb@}%
  818.   \else\expandafter\mathrel@\meaning@\mathrel@
  819.   \ifmathrel@\gdef\thedots@{\dotsb@}%
  820.   \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
  821.  \thedots@}
  822. \def\plainldots@{\mathinner{\ldotp\ldotp\ldotp}}
  823. \def\plaincdots@{\mathinner{\cdotp\cdotp\cdotp}}
  824. \def\dotsi{\!\plaincdots@}
  825. \let\dotsb@\plaincdots@
  826. \newif\ifextra@
  827. \newif\ifrightdelim@
  828. \def\rightdelim@{\global\rightdelim@true
  829.  \ifx\next)\else
  830.  \ifx\next]\else
  831.  \ifx\next\rbrack\else
  832.  \ifx\next\}\else
  833.  \ifx\next\rbrace\else
  834.  \ifx\next\rangle\else
  835.  \ifx\next\rceil\else
  836.  \ifx\next\rfloor\else
  837.  \ifx\next\rgroup\else
  838.  \ifx\next\rmoustache\else
  839.  \ifx\next\right\else
  840.  \ifx\next\bigr\else
  841.  \ifx\next\biggr\else
  842.  \ifx\next\Bigr\else
  843.  \ifx\next\Biggr\else\global\rightdelim@false
  844.  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
  845. \def\extra@{%
  846.  \global\extra@false\rightdelim@\ifrightdelim@\global\extra@true
  847.  \else\ifx\next$\global\extra@true
  848.  \else\xdef\meaning@{\meaning\next..........}%
  849.  \expandafter\macro@\meaning@\macro@\ifmacro@
  850.  \expandafter\DOTS@\meaning@\DOTS@
  851.  \ifDOTS@
  852.  \ifnum\DOTSCASE@=\tw@\global\extra@true
  853.  \fi\fi\fi\fi\fi}
  854. \newif\ifbold@
  855. \def\dotso@{%
  856.  \ifbold@
  857.   \let\next\delayed@
  858.   \DNii@{\extra@\plainldots@\ifextra@\,\fi}%
  859.  \else
  860.   \DNii@{\DN@{\extra@\plainldots@\ifextra@\,\fi}\FN@\next@}%
  861.  \fi
  862.  \nextii@}
  863. \def\ldots{\DN@{\extrap@\plainldots@}%
  864.  \FN@\next@}
  865. \def\cdots{\DN@{\extrap@\plaincdots@}%
  866.  \FN@\next@}
  867. \let\dotso\ldots
  868. \let\dotsb\cdots
  869. \let\dotsm\dotsb
  870. \def\cdot{\mathchar"2201 }
  871. \def\longrightarrow{\DOTSB\relbar\joinrel\rightarrow}
  872. \def\Longrightarrow{\DOTSB\Relbar\joinrel\Rightarrow}
  873. \def\longleftarrow{\DOTSB\leftarrow\joinrel\relbar}
  874. \def\Longleftarrow{\DOTSB\Leftarrow\joinrel\Relbar}
  875. \def\longleftrightarrow{\DOTSB\leftarrow\joinrel\rightarrow}
  876. \def\Longleftrightarrow{\DOTSB\Leftarrow\joinrel\Rightarrow}
  877. \def\mapsto{\DOTSB\mapstochar\rightarrow}
  878. \def\longmapsto{\DOTSB\mapstochar\longrightarrow}
  879. \def\hookrightarrow{\DOTSB\lhook\joinrel\rightarrow}
  880. \def\hookleftarrow{\DOTSB\leftarrow\joinrel\rhook}
  881. \def\doteq{\DOTSB\buildrel\textstyle.\over=}
  882. \def\iff{\DOTSB\;\Longleftrightarrow\;}
  883. \def\dddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
  884.  \hbox{\rm...}\vss}}}}
  885. \def\ddddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
  886.  \hbox{\rm....}\vss}}}}
  887. \def\sphat{^{\mathchoice{}{}%
  888.  {\,\,\botsmash{\hbox{\lower4\ex@\hbox{$\m@th\widehat{\null}$}}}}%
  889.  {\,\botsmash{\hbox{\lower3\ex@\hbox{$\m@th\hat{\null}$}}}}}}
  890. \def\spcheck{^\vee}
  891. \def\sptilde{^\sim}
  892. \def\spacute{^{\!\botsmash{\hbox{\lower\@ne ex\hbox{\'{}}}}}}
  893. \def\spgrave{^{\mathchoice{}{}{}{\!}%
  894.  \botsmash{\hbox{\lower\@ne ex\hbox{\`{}}}}}}
  895. \def\spdot{^{\hbox{\raise\ex@\hbox{\rm.}}}}
  896. \def\spddot{^{\hbox{\raise\ex@\hbox{\rm..}}}}
  897. \def\spdddot{^{\hbox{\raise\ex@\hbox{\rm...}}}}
  898. \def\spddddot{^{\hbox{\raise\ex@\hbox{\rm....}}}}
  899. \def\spbreve{^{\!\botsmash{\hbox{\lower4\ex@\hbox{\u{}}}}}}
  900. \def\spbar{^-}
  901. \def\spvec{^\rightarrow}
  902. \def\textonlyfont@#1#2{\def#1{\RIfM@
  903.  \Err@{Use \noexpand#1only in text}\else#2\fi}}
  904. \textonlyfont@\rm\tenrm
  905. \textonlyfont@\it\tenit
  906. \textonlyfont@\sl\tensl
  907. \textonlyfont@\bf\tenbf
  908. \def\oldnos#1{\RIfM@{\mathcode`\,="013B \fam\@ne#1}\else
  909.  \leavevmode\hbox{$\m@th\mathcode`\,="013B \fam\@ne#1$}\fi}
  910. \def\text{\RIfM@\expandafter\text@\else\expandafter\text@@\fi}
  911. \def\text@@#1{\leavevmode\hbox{#1}}
  912. \def\mathhexbox@#1#2#3{\text{$\m@th\mathchar"#1#2#3$}}
  913. \def\dag{{\mathhexbox@279}}
  914. \def\ddag{{\mathhexbox@27A}}
  915. \def\S{{\mathhexbox@278}}
  916. \def\P{{\mathhexbox@27B}}
  917. \newif\iffirstchoice@
  918. \firstchoice@true
  919. \def\text@#1{\mathchoice
  920.  {\hbox{\everymath{\displaystyle}\def\textfonti{\the\textfont\@ne}%
  921.   \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}}
  922.  {\hbox{\firstchoice@false
  923.   \everymath{\textstyle}\def\textfonti{\the\textfont\@ne}%
  924.   \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}}
  925.  {\hbox{\firstchoice@false
  926.   \everymath{\scriptstyle}\def\textfonti{\the\scriptfont\@ne}%
  927.   \def\textfontii{\the\scriptfont\tw@}\textdef@@ S\rm#1}}
  928.  {\hbox{\firstchoice@false
  929.   \everymath{\scriptscriptstyle}\def\textfonti
  930.   {\the\scriptscriptfont\@ne}%
  931.   \def\textfontii{\the\scriptscriptfont\tw@}\textdef@@ s\rm#1}}}
  932. \def\textdef@@#1{\textdef@#1\rm\textdef@#1\bf\textdef@#1\sl\textdef@#1\it}
  933. \def\rmfam{0}
  934. \def\textdef@#1#2{%
  935.  \DN@{\csname\expandafter\eat@\string#2fam\endcsname}%
  936.  \if S#1\edef#2{\the\scriptfont\next@\relax}%
  937.  \else\if s#1\edef#2{\the\scriptscriptfont\next@\relax}%
  938.  \else\edef#2{\the\textfont\next@\relax}\fi\fi}
  939. \scriptfont\itfam\tenit \scriptscriptfont\itfam\tenit
  940. \scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl
  941. \newif\iftopfolded@
  942. \newif\ifbotfolded@
  943. \def\topfoldedtext{\topfolded@true\botfolded@false\foldedtext@}
  944. \def\botfoldedtext{\botfolded@true\topfolded@false\foldedtext@}
  945. \def\foldedtext{\topfolded@false\botfolded@false\foldedtext@}
  946. \Invalid@\foldedwidth
  947. \def\foldedtext@{%
  948.  \DN@{\ifx\next\foldedwidth\let\next@\nextii@\else
  949.   \DN@{\nextii@\foldedwidth{.3\hsize}}\fi\next@}%
  950.  \DNii@\foldedwidth##1##2{\setbox\z@\vbox
  951.   {\normalbaselines\hsize##1\relax
  952.   \tolerance1600 \noindent\ignorespaces##2}\ifbotfolded@\boxz@\else
  953.   \iftopfolded@\vtop{\unvbox\z@}\else\vcenter{\boxz@}\fi\fi}%
  954.  \FN@\next@}
  955. \def\bold{\RIfM@\expandafter\bold@\else
  956.  \expandafter\nonmatherr@\expandafter\bold\fi}
  957. \def\bold@#1{{\bold@@{#1}}}
  958. \def\bold@@#1{\fam\bffam\relax#1}
  959. \def\slanted{\RIfM@\expandafter\slanted@\else
  960.  \expandafter\nonmatherr@\expandafter\slanted\fi}
  961. \def\slanted@#1{{\slanted@@{#1}}}
  962. \def\slanted@@#1{\fam\slfam\relax#1}
  963. \def\rom{\RIfM@\expandafter\rom@\else
  964.  \expandafter\nonmatherr@\expandafter\rom\fi}
  965. \def\rom@#1{{\rom@@{#1}}}
  966. \def\rom@@#1{\fam\rmfam\relax#1}
  967. \def\italic{\RIfM@\expandafter\italic@\else
  968.  \expandafter\nonmatherr@\expandafter\italic\fi}
  969. \def\italic@#1{{\italic@@{#1}}}
  970. \def\italic@@#1{\fam\itfam\relax#1}
  971. \def\Cal{\RIfM@\expandafter\Cal@\else
  972.  \expandafter\nonmatherr@\expandafter\Cal\fi}
  973. \def\Cal@#1{{\Cal@@{#1}}}
  974. \def\Cal@@#1{\noaccents@\fam\tw@#1}
  975. \mathchardef\Gamma="0000
  976. \mathchardef\Delta="0001
  977. \mathchardef\Theta="0002
  978. \mathchardef\Lambda="0003
  979. \mathchardef\Xi="0004
  980. \mathchardef\Pi="0005
  981. \mathchardef\Sigma="0006
  982. \mathchardef\Upsilon="0007
  983. \mathchardef\Phi="0008
  984. \mathchardef\Psi="0009
  985. \mathchardef\Omega="000A
  986. \mathchardef\varGamma="0100
  987. \mathchardef\varDelta="0101
  988. \mathchardef\varTheta="0102
  989. \mathchardef\varLambda="0103
  990. \mathchardef\varXi="0104
  991. \mathchardef\varPi="0105
  992. \mathchardef\varSigma="0106
  993. \mathchardef\varUpsilon="0107
  994. \mathchardef\varPhi="0108
  995. \mathchardef\varPsi="0109
  996. \mathchardef\varOmega="010A
  997. \newif\ifmsamloaded@
  998. \newif\ifmsbmloaded@
  999. \newif\ifeufmloaded@
  1000. \let\alloc@@\alloc@
  1001. \def\hexnumber@#1{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or
  1002.  9\or A\or B\or C\or D\or E\or F\fi}
  1003. \edef\bffam@{\hexnumber@\bffam}
  1004. \def\loadmsam{\msamloaded@true
  1005.  \font@\tenmsa=msam10
  1006.  \font@\sevenmsa=msam7
  1007.  \font@\fivemsa=msam5
  1008.  \alloc@@8\fam\chardef\sixt@@n\msafam
  1009.  \textfont\msafam=\tenmsa
  1010.  \scriptfont\msafam=\sevenmsa
  1011.  \scriptscriptfont\msafam=\fivemsa
  1012.  \edef\msafam@{\hexnumber@\msafam}%
  1013.  \mathchardef\dabar@"0\msafam@39
  1014.  \def\dashrightarrow{\mathrel{\dabar@\dabar@\mathchar"0\msafam@4B}}%
  1015.  \def\dashleftarrow{\mathrel{\mathchar"0\msafam@4C\dabar@\dabar@}}%
  1016.  \let\dasharrow\dashrightarrow
  1017.  \def\ulcorner{\delimiter"4\msafam@70\msafam@70 }
  1018.  \def\urcorner{\delimiter"5\msafam@71\msafam@71 }
  1019.  \def\llcorner{\delimiter"4\msafam@78\msafam@78 }
  1020.  \def\lrcorner{\delimiter"5\msafam@79\msafam@79 }
  1021.  \def\yen{{\mathhexbox@\msafam@55 }}
  1022.  \def\checkmark{{\mathhexbox@\msafam@58 }}
  1023.  \def\circledR{{\mathhexbox@\msafam@72 }}
  1024.  \def\maltese{{\mathhexbox@\msafam@7A }}}
  1025. \def\loadmsbm{\msbmloaded@true
  1026.  \font@\tenmsb=msbm10
  1027.  \font@\sevenmsb=msbm7
  1028.  \font@\fivemsb=msbm5
  1029.  \alloc@@8\fam\chardef\sixt@@n\msbfam
  1030.  \textfont\msbfam=\tenmsb
  1031.  \scriptfont\msbfam=\sevenmsb
  1032.  \scriptscriptfont\msbfam=\fivemsb
  1033.  \edef\msbfam@{\hexnumber@\msbfam}}
  1034. \def\widehat#1{\ifmsbmloaded@
  1035.  \setboxz@h{$\m@th#1$}\ifdim\wdz@>\tw@ em\mathaccent"0\msbfam@5B{#1}\else
  1036.   \mathaccent"0362{#1}\fi
  1037.  \else\mathaccent"0362{#1}\fi}
  1038. \def\widetilde#1{\ifmsbmloaded@
  1039.  \setboxz@h{$\m@th#1$}\ifdim\wdz@>\tw@ em\mathaccent"0\msbfam@5D{#1}\else
  1040.   \mathaccent"0365{#1}\fi
  1041.  \else\mathaccent"0365{#1}\fi}
  1042. \def\newsymbol#1#2#3#4#5{\define#1{}\let\next@\relax
  1043.  \ifnum#2=\@ne\ifmsamloaded@\let\next@\msafam@\fi\else
  1044.  \ifnum#2=\tw@\ifmsbmloaded@\let\next@\msbfam@\fi\fi\fi
  1045.  \ifx\next@\relax
  1046.   \ifnum#2>\tw@\Err@{\Invalid@@\string\newsymbol}\else
  1047.   \ifnum#2=\@ne\Err@{You must first \string\loadmsam}\else
  1048.    \Err@{You must first \string\loadmsbm}\fi\fi
  1049.  \else
  1050.   \mathchardef#1="#3\next@#4#5
  1051.  \fi}
  1052. \def\UseAMSsymbols{\input amssym.tex\relax}
  1053. \def\Bbb{\RIfM@\expandafter\Bbb@\else
  1054.  \expandafter\nonmatherr@\expandafter\Bbb\fi}
  1055. \def\Bbb@#1{{\Bbb@@{#1}}}
  1056. \def\Bbb@@#1{\noaccents@\fam\msbfam\relax#1}
  1057. \def\loadeufm{\eufmloaded@true
  1058.  \font@\teneufm=eufm10
  1059.  \font@\seveneufm=eufm7
  1060.  \font@\fiveeufm=eufm5
  1061.  \alloc@@8\fam\chardef\sixt@@n\eufmfam
  1062.  \textfont\eufmfam=\teneufm
  1063.  \scriptfont\eufmfam=\seveneufm
  1064.  \scriptscriptfont\eufmfam=\fiveeufm}
  1065. \def\frak{\RIfM@\expandafter\frak@\else
  1066.  \expandafter\nonmatherr@\expandafter\frak\fi}
  1067. \def\frak@#1{{\frak@@{#1}}}
  1068. \def\frak@@#1{\fam\eufmfam\relax#1}
  1069. \let\goth\frak
  1070. \newif\ifcmmibloaded@
  1071. \newif\ifcmbsyloaded@
  1072. \def\loadbold{\cmmibloaded@true\cmbsyloaded@true
  1073.  \font@\tencmmib=cmmib10 \skewchar\tencmmib='177
  1074.  \font@\sevencmmib=cmmib7 \skewchar\sevencmmib='177
  1075.  \font@\fivecmmib=cmmib5 \skewchar\fivecmmib='177
  1076.  \alloc@@8\fam\chardef\sixt@@n\cmmibfam
  1077.  \textfont\cmmibfam=\tencmmib
  1078.  \scriptfont\cmmibfam=\sevencmmib
  1079.  \scriptscriptfont\cmmibfam=\fivecmmib
  1080.  \edef\cmmibfam@{\hexnumber@\cmmibfam}%
  1081.  \font@\tencmbsy=cmbsy10 \skewchar\tencmbsy='60
  1082.  \font@\sevencmbsy=cmbsy7 \skewchar\sevencmbsy='60
  1083.  \font@\fivecmbsy=cmbsy5 \skewchar\fivecmbsy='60
  1084.  \alloc@@8\fam\chardef\sixt@@n\cmbsyfam
  1085.  \textfont\cmbsyfam=\tencmbsy
  1086.  \scriptfont\cmbsyfam=\sevencmbsy
  1087.  \scriptscriptfont\cmbsyfam=\fivecmbsy
  1088.  \edef\cmbsyfam@{\hexnumber@\cmbsyfam}}
  1089. \def\mathchari@#1#2#3{\ifcmmibloaded@\mathchar"#1\cmmibfam@#2#3 \else
  1090.  \Err@{First bold symbol font not loaded}\fi}
  1091. \def\mathcharii@#1#2#3{\ifcmbsyloaded@\mathchar"#1\cmbsyfam@#2#3 \else
  1092.  \Err@{Second bold symbol font not loaded}\fi}
  1093. \def\boldsymbol#1{%
  1094.  \DN@{\Err@{You can't use \noexpand\boldsymbol with \string#1}#1}%
  1095.  \ifcat\noexpand#1A%
  1096.    \let\next@\relax
  1097.   \ifcmmibloaded@{\fam\cmmibfam#1}\else\Err@{First bold symbol
  1098.    font not loaded}\fi
  1099.  \else
  1100.   \xdef\meaning@{\meaning#1.........}%
  1101.   \expandafter\math@\meaning@\math@
  1102.   \ifmath@
  1103.    \expandafter\mathch@\meaning@\mathch@
  1104.    \ifmathch@
  1105.     \expandafter\boldsymbol@@\meaning@\boldsymbol@@
  1106.    \fi
  1107.   \else
  1108.    \expandafter\macro@\meaning@\macro@
  1109.    \expandafter\delim@\meaning@\delim@
  1110.    \ifdelim@
  1111.     \expandafter\delim@@\meaning@\delim@@
  1112.    \else
  1113.     \boldsymbol@{#1}%
  1114.    \fi
  1115.   \fi
  1116.  \fi
  1117.  \next@}
  1118. \def\mathhexboxii@#1#2{\ifcmbsyloaded@\mathhexbox@{\cmbsyfam@}{#1}{#2}\else
  1119.   \Err@{Second bold symbol font not loaded}\fi}
  1120. \def\boldsymbol@#1{\let\next@\relax\let\next=#1%
  1121.  \ifx\next\cdot\mathcharii@201 \else
  1122.  \ifx\next\prime{{\null\mathcharii@030 \null}}\else
  1123.  \ifx\next\lbrack\mathchar"4\bffam@5B \else
  1124.  \ifx\next\rbrack\mathchar"5\bffam@5D \else
  1125.  \ifx\next\{\mathcharii@466 \else
  1126.  \ifx\next\lbrace\mathcharii@466 \else
  1127.  \ifx\next\}\mathcharii@567 \else
  1128.  \ifx\next\rbrace\mathcharii@567 \else
  1129.  \ifx\next\surd{{\mathcharii@170}}\else
  1130.  \ifx\next\S{{\mathhexboxii@78}}\else
  1131.  \ifx\next\P{{\mathhexboxii@7B}}\else
  1132.  \ifx\next\dag{{\mathhexboxii@79}}\else
  1133.  \ifx\next\ddag{{\mathhexboxii@7A}}\else
  1134.  \DN@{\Err@{You can't use \noexpand\boldsymbol with \string#1}#1}%
  1135.  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
  1136. \def\boldsymbol@@#1.#2\boldsymbol@@{\classnum@#1 \count@@@\classnum@
  1137.  \divide\classnum@4096 \count@\classnum@
  1138.  \multiply\count@4096 \advance\count@@@-\count@ \count@@\count@@@
  1139.  \divide\count@@@\@cclvi \count@\count@@
  1140.  \multiply\count@@@\@cclvi \advance\count@@-\count@@@
  1141.  \divide\count@@@\@cclvi
  1142.  \multiply\classnum@4096 \advance\classnum@\count@@
  1143.  \ifnum\count@@@=\z@
  1144.   \count@"\bffam@ \multiply\count@\@cclvi
  1145.   \advance\classnum@\count@
  1146.   \DN@{\mathchar\number\classnum@}%
  1147.  \else
  1148.   \ifnum\count@@@=\@ne
  1149.    \ifcmmibloaded@
  1150.    \count@"\cmmibfam@ \multiply\count@\@cclvi
  1151.    \advance\classnum@\count@
  1152.    \DN@{\mathchar\number\classnum@}%
  1153.    \else\DN@{\Err@{First bold symbol font not loaded}}\fi
  1154.   \else
  1155.    \ifnum\count@@@=\tw@
  1156.   \ifcmbsyloaded@
  1157.     \count@"\cmbsyfam@ \multiply\count@\@cclvi
  1158.     \advance\classnum@\count@
  1159.     \DN@{\mathchar\number\classnum@}%
  1160.   \else\DN@{\Err@{Second bold symbol font not loaded}}\fi
  1161.   \fi
  1162.  \fi
  1163. \fi}
  1164. \newif\ifdelim@
  1165. \newcount\delimcount@
  1166. {\uccode`6=`\\ \uccode`7=`d \uccode`8=`e \uccode`9=`l
  1167.  \uppercase{\gdef\delim@#1#2#3#4#5\delim@
  1168.   {\delim@false\ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\delim@true
  1169.    \xdef\meaning@{#5}\fi\fi\fi\fi}}}
  1170. \def\delim@@#1"#2#3#4#5#6\delim@@{\if#32%
  1171. \let\next@\relax
  1172.  \ifcmbsyloaded@
  1173.  \mathcharii@#2#4#5 \else\Err@{Second bold family not loaded}\fi\fi}
  1174. \def\vert{\delimiter"026A30C }
  1175. \def\Vert{\delimiter"026B30D }
  1176. \let\|\Vert
  1177. \def\backslash{\delimiter"026E30F }
  1178. \def\boldkeydots@#1{\bold@true\let\next=#1\let\delayed@=#1\mdots@@
  1179.  \boldkey#1\bold@false}
  1180. \def\boldsymboldots@#1{\bold@true\let\next=#1\let\delayed@=#1\mdots@@
  1181.  \boldsymbol#1\bold@false}
  1182.  
  1183. %\newif\ifeufbloaded@
  1184. %\def\loadeufb{\eufbloaded@true
  1185. % \font@\teneufb=eufb10
  1186. % \font@\seveneufb=eufb7
  1187. % \font@\fiveeufb=eufb5
  1188. % \alloc@@8\fam\chardef\sixt@@n\eufbfam
  1189. % \textfont\eufbfam=\teneufb
  1190. % \scriptfont\eufbfam=\seveneufb
  1191. % \scriptscriptfont\eufbfam=\fiveeufb
  1192. % \edef\eufbfam@{\hexnumber@\eufbfam}}
  1193.  
  1194. %\newif\ifeusmloaded@
  1195. %\def\loadeusm{\eusmloaded@true
  1196. % \font@\teneusm=eusm10
  1197. % \font@\seveneusm=eusm7
  1198. % \font@\fiveeusm=eusm5
  1199. % \alloc@@8\fam\chardef\sixt@@n\eusmfam
  1200. % \textfont\eusmfam=\teneusm
  1201. % \scriptfont\eusmfam=\seveneusm
  1202. % \scriptscriptfont\eusmfam=\fiveeusm
  1203. % \edef\eusmfam@{\hexnumber@\eusmfam}}
  1204.  
  1205. %\newif\ifeusbloaded@
  1206. %\def\loadeusb{\eusbloaded@true
  1207. % \font@\teneusb=eusb10
  1208. % \font@\seveneusb=eusb7
  1209. % \font@\fiveeusb=eusb5
  1210. % \alloc@@8\fam\chardef\sixt@@n\eusbfam
  1211. % \textfont\eusbfam=\teneusb
  1212. % \scriptfont\eusbfam=\seveneusb
  1213. % \scriptscriptfont\eusbfam=\fiveeusb
  1214. % \edef\eusbfam@{\hexnumber@\eusbfam}}
  1215.  
  1216. %\newif\ifeurmloaded@
  1217. %\def\loadeurm{\eurmloaded@true
  1218. % \font@\teneurm=eurm10
  1219. % \font@\seveneurm=eurm7
  1220. % \font@\fiveeurm=eurm5
  1221. % \alloc@@8\fam\chardef\sixt@@n\eurmfam
  1222. % \textfont\eurmfam=\teneurm
  1223. % \scriptfont\eurmfam=\seveneurm
  1224. % \scriptscriptfont\eurmfam=\fiveeurm
  1225. % \edef\eurmfam@{\hexnumber@\eurmfam}}
  1226.  
  1227. %\newif\ifeurbloaded@
  1228. %\def\loadeurb{\eurbloaded@true
  1229. % \font@\teneurb=eurb10
  1230. % \font@\seveneurb=eurb7
  1231. % \font@\fiveeurb=eurb5
  1232. % \alloc@@8\fam\chardef\sixt@@n\eurbfam
  1233. % \textfont\eurbfam=\teneurb
  1234. % \scriptfont\eurbfam=\seveneurb
  1235. % \scriptscriptfont\eurbfam=\fiveeurb
  1236. % \edef\eurbfam@{\hexnumber@\eurbfam}}
  1237.  
  1238. \def\accentclass@{7}
  1239. \def\noaccents@{\def\accentclass@{0}}
  1240. \def\makeacc@#1#2{\def#1{\mathaccent"\accentclass@#2 }}
  1241. \makeacc@\hat{05E}
  1242. \makeacc@\check{014}
  1243. \makeacc@\tilde{07E}
  1244. \makeacc@\acute{013}
  1245. \makeacc@\grave{012}
  1246. \makeacc@\dot{05F}
  1247. \makeacc@\ddot{07F}
  1248. \makeacc@\breve{015}
  1249. \makeacc@\bar{016}
  1250. \def\vec{\mathaccent"017E }
  1251. \newcount\skewcharcount@
  1252. \newcount\familycount@
  1253. \def\theskewchar@{\global\familycount@\@ne
  1254.  \global\skewcharcount@\the\skewchar\textfont\@ne
  1255.  \ifnum\fam>\m@ne\ifnum\fam<16
  1256.   \global\familycount@\the\fam\relax
  1257.   \global\skewcharcount@\the\skewchar\textfont\the\fam\relax\fi\fi
  1258.  \ifnum\skewcharcount@>\m@ne
  1259.   \ifnum\skewcharcount@<128
  1260.   \global\multiply\familycount@256
  1261.   \global\advance\skewcharcount@\familycount@
  1262.   \global\advance\skewcharcount@28672
  1263.   \mathchar\skewcharcount@\else
  1264.   \global\skewcharcount@\m@ne\fi\else
  1265.  \global\skewcharcount@\m@ne\fi}
  1266. \newcount\pointcount@
  1267. \def\getpoints@#1.#2\getpoints@{\pointcount@#1 }
  1268. \newdimen\accentdimen@
  1269. \newcount\accentmu@
  1270. \def\dimentomu@{\global\multiply\accentdimen@ 100
  1271.  \expandafter\getpoints@\the\accentdimen@\getpoints@
  1272.  \multiply\pointcount@18
  1273.  \divide\pointcount@\@m
  1274.  \global\accentmu@\pointcount@}
  1275. \def\Makeacc@#1#2{\def#1{\RIfM@\DN@{\mathaccent@
  1276.  {"\accentclass@#2 }}\else\DN@{\nonmatherr@{#1}}\fi\next@}}
  1277. \def\unbracefonts@{\let\Cal@\Cal@@\let\rom@\rom@@\let\bold@\bold@@
  1278.  \let\slanted@\slanted@@}
  1279. \def\mathaccent@#1#2{\ifnum\fam=\m@ne\xdef\thefam@{1}\else
  1280.  \xdef\thefam@{\the\fam}\fi
  1281.  \global\accentdimen@\z@
  1282.  \setboxz@h{\unbracefonts@$\m@th\fam\thefam@\relax#2$}%
  1283.  \ifdim\accentdimen@=\z@\DN@{\mathaccent#1{#2}}%
  1284.   \setbox\tw@\hbox{\unbracefonts@$\m@th\fam\thefam@\relax#2\theskewchar@$}%
  1285.   \setbox4=\hbox{$\m@th\ifnum\skewcharcount@=\m@ne\else
  1286.    \mathchar\skewcharcount@\fi$}%
  1287.   \global\accentdimen@\wd\tw@\global\advance\accentdimen@-\wdz@
  1288.   \global\advance\accentdimen@-\wd4
  1289.   \global\multiply\accentdimen@\tw@
  1290.   \dimentomu@\global\advance\accentmu@\@ne
  1291.  \else\DN@{{\mathaccent#1{#2\mkern\accentmu@ mu}%
  1292.     \mkern-\accentmu@ mu}{}}\fi
  1293.  \next@}
  1294. \Makeacc@\Hat{05E}
  1295. \Makeacc@\Check{014}
  1296. \Makeacc@\Tilde{07E}
  1297. \Makeacc@\Acute{013}
  1298. \Makeacc@\Grave{012}
  1299. \Makeacc@\Dot{05F}
  1300. \Makeacc@\Ddot{07F}
  1301. \Makeacc@\Breve{015}
  1302. \Makeacc@\Bar{016}
  1303. \def\Vec{\RIfM@\DN@{\mathaccent@{"017E }}\else
  1304.  \DN@{\nonmatherr@\Vec}\fi\next@}
  1305. \def\sqrt#1{\radical"270370 {#1}}
  1306. \let\underline@\underline
  1307. \let\overline@\overline
  1308. \def\underline#1{\underline@{#1}}
  1309. \def\overline#1{\overline@{#1}}
  1310. \Invalid@\leftroot
  1311. \Invalid@\uproot
  1312. \newcount\uproot@
  1313. \newcount\leftroot@
  1314. \def\plainroot@#1\of#2{\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}%
  1315.  \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}}
  1316.  {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup}
  1317. \def\r@@t#1#2{\setboxz@h{$\m@th#1\sqrt{#2}$}%
  1318.  \dimen@\ht\z@\advance\dimen@-\dp\z@
  1319.  \setbox\tw@\hbox{$\m@th#1\mskip\uproot@ mu$}\advance\dimen@ by1.667\wd\tw@
  1320.  \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox
  1321.  \mkern-10mu\mkern\leftroot@ mu\boxz@}
  1322. \def\boxed#1{\setboxz@h{$\m@th\displaystyle{#1}$}\dimen@.4\ex@
  1323.  \advance\dimen@3\ex@\advance\dimen@\dp\z@
  1324.  \hbox{\lower\dimen@\hbox{%
  1325.  \vbox{\hrule\height.4\ex@
  1326.  \hbox{\vrule\width.4\ex@\hskip3\ex@\vbox{\vskip3\ex@\boxz@\vskip3\ex@}%
  1327.  \hskip3\ex@\vrule\width.4\ex@}\hrule\height.4\ex@}%
  1328.  }}}
  1329. \newdimen\minaw@
  1330. \minaw@11.11128\ex@
  1331. \def\pmb{\RIfM@\expandafter\mathpalette\expandafter\pmb@\else
  1332.  \expandafter\pmb@@\fi}
  1333. \def\pmb@@#1{\leavevmode\setboxz@h{#1}\kern-.025em\copy\z@\kern-\wdz@
  1334.  \kern-.05em\copy\z@\kern-\wdz@\kern-.025em\raise.0433em\boxz@}
  1335. \def\binrel@@#1{\ifdim\wd\tw@<\z@\mathbin{#1}\else\ifdim\wd\tw@>\z@
  1336.  \mathrel{#1}\else{#1}\fi\fi}
  1337. \newdimen\pmbraise@
  1338. \def\pmb@#1#2{\setbox4=\hbox{$\m@th#1{#2}$}%
  1339.  \setbox6=\hbox{$\m@th#1\mkern.7794mu$}\pmbraise@\wd6
  1340.  \binrel@{#2}\binrel@@{\mkern-.45mu\copy4 \kern-\wd4
  1341.  \mkern-.9mu\copy4 \kern-\wd4 \mkern-.45mu\raise\pmbraise@\box4}}
  1342. \font\dummyft@=dummy
  1343. \fontdimen1 \dummyft@=\z@
  1344. \fontdimen2 \dummyft@=\z@
  1345. \fontdimen3 \dummyft@=\z@
  1346. \fontdimen4 \dummyft@=\z@
  1347. \fontdimen5 \dummyft@=\z@
  1348. \fontdimen6 \dummyft@=\z@
  1349. \fontdimen7 \dummyft@=\z@
  1350. \fontdimen8 \dummyft@=\z@
  1351. \fontdimen9 \dummyft@=\z@
  1352. \fontdimen10 \dummyft@=\z@
  1353. \fontdimen11 \dummyft@=\z@
  1354. \fontdimen12 \dummyft@=\z@
  1355. \fontdimen13 \dummyft@=\z@
  1356. \fontdimen14 \dummyft@=\z@
  1357. \fontdimen15 \dummyft@=\z@
  1358. \fontdimen16 \dummyft@=\z@
  1359. \fontdimen17 \dummyft@=\z@
  1360. \fontdimen18 \dummyft@=\z@
  1361. \fontdimen19 \dummyft@=\z@
  1362. \fontdimen20 \dummyft@=\z@
  1363. \fontdimen21 \dummyft@=\z@
  1364. \fontdimen22 \dummyft@=\z@
  1365. \def\dodummy@{{\def\\##1{\global\let##1\dummyft@}\fontlist@}}
  1366. \def\nopages@{\output={\setbox\z@\box255 \deadcycles\z@}%
  1367.  \alloc@@5\toks\toksdef\@cclvi\output}
  1368. \let\galleys\nopages@
  1369. \newif\ifsyntax@
  1370. \newcount\countxviii@
  1371. \def\syntax{\syntax@true\dodummy@\countxviii@\count18
  1372.  \loop\ifnum\countxviii@>\m@ne\textfont\countxviii@=\dummyft@
  1373.  \scriptfont\countxviii@=\dummyft@\scriptscriptfont\countxviii@=\dummyft@
  1374.  \advance\countxviii@\m@ne\repeat
  1375.  \dummyft@\tracinglostchars\z@\nopages@\frenchspacing\hbadness\@M}
  1376. \def\S@{S } \def\G@{G } \def\P@{P }
  1377. \def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
  1378.  \ch@ck#1#4#2\allocationnumber=\count1#1
  1379.  \global#3#5=\allocationnumber
  1380.  \wlog{\string#5=\string#2\the\allocationnumber}}
  1381. \let\proclaim\undefined
  1382. \let\=\undefined
  1383. \let\>\undefined
  1384. \let\cal\undefined
  1385. \let\mit\undefined
  1386. \let\oldstyle\undefined
  1387. \catcode`\@=\active
  1388.